#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
# @Time    : 2021/10/4 14:04
# @Author  : YHSimon

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 12.1, 0.1)  # 从0到12.1 每0.1一个点
y = np.sin(x)

# 画图
"""
    1. \ 反斜杠 换行
    2. r--表示红色的虚线 r: 红色点虚线  r-. 红色线点虚线
    3. 单独设置颜色,线型: plt.plot(...,color='lime',linestyle='',linewidth=2)
    4. 点操作:
          1. 设置点形: plt.plot(...,marker='o')  marker的取值自行搜索
          2. 点的颜色: plt.plot(...,markerfacecolor='xxx',markeredgecolor='xxxx')
          3. 点的大小: markersize=3
          4. 边的粗细: markeredgewidth=1
    5. 字的设置
    6. 使用LaTex语法
        ax.set_xlabel('$xxx$')
          - $^o$ 表示上标小圈
          - $\mu$ 表示希腊字母μ
    7. 刻度的设置
       ax.set_xticks([###,###,###,...])
       ax.set_yticks([###,###,###,...])
       
    8. 多线条的设置
       plt.plot(...,label='xxx')
       plt.legend(loc='xxx') 设置图例位置
       zorder属性设置线条间的前后位置 数值越小越接近背景
       
    9. 坐标轴的设置
       1. 子图的绘制
          fig , ax=plt.subplots(row_num,col_num)
          ax[#].plot(...)
       2. 设置坐标轴范围
          ax.set_xlim(#,#)
          ax.set_ylim(#,#)
          
       3. 设置指数坐标轴
          ax.set_xscale('log')
          ax.set_yscale('log')
    
       
"""
# plt.plot(x, y, 'r-.')
plt.plot(x, y, color='lime', linestyle=':', linewidth=1,
         marker='p', markerfacecolor='pink', markeredgecolor='g', markeredgewidth=2, markersize=1,
         label="normal", zorder=2)

# 绘制散点图

# plt.scatter(x, y)  # 或者设置plot()中的linestyle=''

# 5. 字的设置  6. 使用LaTex语法
ax1 = plt.gca()
# weight 设置粗体  style='italic'设置斜体
ax1.set_title('Big Title', fontname='Arial', fontsize=20, weight='bold', style='italic')
ax1.set_xlabel('time (UTC)')
ax1.set_ylabel('T ($^o$C)')  # $^o$ 表示上标的小圈

# 7.刻度的设置
ax1.set_xticks([0, 2.5, 7, 11])
# 设置刻度的标签
ax1.set_xticklabels(['N', 'E', 'S', 'W'])
# 设置刻度的属性
ax1.tick_params(axis='both', direction='in', color='y', length=5, width=3)

# 8. 多条线的设置
plt.plot(x + 2, y, label='strange', zorder=2)
plt.legend(loc='best')
# plt.tight_layout()  # 紧致布局
plt.savefig('./Big_Title.png', dpi=300)
plt.savefig('./Big_Title.png', dpi=300)

# 9. 子图的绘制
fig, ax = plt.subplots(2, 1)  # 两行一列的子图  ax保存这两幅子图各自的坐标轴数值
ax[0].plot(x, y)
ax[1].plot(x + 2, y)
# 设定坐标轴范围
ax[0].set_xlim(0, 10)
ax[1].set_xlim(0, 10)

# 设置指数的坐标轴
x2 = np.arange(1, 100, 1)
y2 = np.exp(x2)
plt.plot(x2, y2)
ax = plt.gca()
ax.set_yscale('log')
plt.show()
